package com.falcon.authority.domain.req;

import com.falcon.authority.domain.po.ApiPO;
import com.falcon.core.domain.AbsPageQuery;
import com.swan.mybatis.condition.Condition;
import com.swan.mybatis.condition.OpType;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;


/** Api 列表
* @author zongf
* @since 2024-03-15
*/
@Data
@Accessors(chain = true)
public class ApiQuery extends AbsPageQuery {

    private Long id;

    /** 创建者 */
    private String creator;

    /** 创建时间 */
    private Date createTime;

    /** 更新者 */
    private String updater;

    /** 更新时间 */
    private Date updateTime;

    /** 模块名 */
    private String moduleName;

    /** 接口类型: GET/POST/PUT/DELETE */
    private String httpMethod;

    /** 访问路径 */
    private String requestUri;

    /** 权限标识 */
    private String perms;

    /** 状态: 0-删除 1-启用 */
    private Integer status;

    /** 父id */
    private Long parentId;

    /** 类名/方法名 */
    private String name;

    /** 方法描述 */
    private String description;

    @Override
    public Condition toCondition() {
        Condition condition = Condition.newInstance();
        condition.ignoreEmptyString();

        condition
                .and(ApiPO.Fields.moduleName, OpType.like, this.moduleName)
                .and(ApiPO.Fields.name, OpType.like, this.name)
                .and(ApiPO.Fields.status, OpType.equals, this.status)
                .and(ApiPO.Fields.requestUri, OpType.like, this.requestUri)
                .and(ApiPO.Fields.description, OpType.like, this.description)
        ;
        return condition;
    }

}

